In the entertainment world, it has become commonplace to offer real-time or near-real-time delivery of voice, music, video and other forms of data over private and public data networks.
While users can obtain much enjoyment by using their computing devices to passively receive the aforementioned forms of media over a network, a superior user experience can be enabled when the user is allowed to influence or otherwise participate in what is being delivered. An often-cited example is IPTV, where user input is monitored and used to adapt the nature of the television signal being delivered to the user, typically over a private data network that provides a guaranteed bandwidth. A different example is Skype, where users participate in a video or audio conference that is supported over the Internet rather than over a private data network.
The video game industry also has much to offer by harnessing the power of the Internet. As Internet connections become faster and more reliable, it becomes feasible to transmit larger amounts of graphics generated at a central source to participants in a video game. Moreover, because images are rendered in the “cloud”, users can use ordinary PCs, tablets or smartphones to partake in the gaming experience, thus bypassing the need for expensive video game consoles. This is known as a cloud gaming system.
In a cloud gaming system, the computational burden is shifted to the game provider. However, the game provider's resources available are not limitless. From a practical perspective, limits on computational resources can impact the realism of the game or the number of users who can concurrently play a version of the game at any given time, or both.
To handle the added computational burden of a cloud-based solution, some cloud gaming providers are shifting to a model in which the game state is monitored by one computer and rendering is carried out by another computer. To achieve rendering, a rendering command is placed by the game state computer and executed by the rendering computer. However, this configuration places demands on the interconnection bandwidth between the two computers, and therefore it becomes of importance to efficiently use this bandwidth when remotely executing rendering commands. Similar considerations apply to other industries where remote procedure calls are used in high volume.